package com.hq.fxh.CustomerView;

import android.app.Activity;
import android.content.Context;
import android.support.annotation.Nullable;
import android.text.Layout;
import android.util.AttributeSet;

import android.util.FloatMath;
import android.view.MotionEvent;
import android.widget.RelativeLayout;
import android.widget.TextView;

/**
 * /**
 *
 * @author 薛
 * @ClassName
 * @Description :
 * @Created 2017/9/20
 * @Email xlwenhao1858@sina.com
 */


public class MoreLineTextView extends TextView {
    Context context;


    public MoreLineTextView(Context context, AttributeSet attrs) {
        super(context, attrs, 0);
        this.context = context;
    }

    //构造函数，设置当前状态为STATE_STOP，表示不移动
    public MoreLineTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        this.context = context;
    }
/*@Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);

        Layout layout = getLayout();
        if (layout != null) {
            String str = this.getText()
                    .toString();

            int height =(int)Math.ceil(getMaxLineHeight(str))
                    + getCompoundPaddingTop()
                    + getCompoundPaddingBottom();
            int width = getMeasuredWidth();
            setMeasuredDimension(width, height);
        }
    }*/


    private float getMaxLineHeight(String str) {
        float height = 0.0f;
        float screenW = ((Activity) context).getWindowManager()
                .getDefaultDisplay().getWidth();
        float paddingLeft = ((RelativeLayout) this.getParent())
                .getPaddingLeft();
        float paddingReft = ((RelativeLayout) this.getParent())
                .getPaddingRight();
        // 这里具体this.getPaint()要注意使用，要看你的TextView在什么位置，这个是拿TextView父控件的Padding的，为了更准确的算出换行
        int line = (int) Math.ceil((this.getPaint().measureText(str) / (screenW
                - paddingLeft - paddingReft)));
        height = (this.getPaint().getFontMetrics().descent - this.getPaint()
                .getFontMetrics().ascent) * line;
        return height;
    }


}
